package org.example.service;


import org.example.entity.User;
import org.example.mapper.UserMapper;
import org.example.util.UserDataGenerator;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@Service
public class UserImportService {

    @Resource
    private UserMapper userMapper;

    /**
     * 导入百万级用户数据
     * @param total 总条数
     * @param batchSize 每批插入数量（建议5000-10000，根据数据库性能调整）
     */
    public void importMillionUsers(long total, int batchSize) {
        // 生成数据迭代器（分批生成，不占大量内存）
        Iterable<List<User>> userBatches = UserDataGenerator.generateUsers(total, batchSize);

        // 遍历每批数据，批量插入
        for (List<User> batch : userBatches) {
            batchInsert(batch);
        }
    }

    /**
     * 单批插入（独立事务）
     */
    @Transactional
    public void batchInsert(List<User> userList) {
        if (!userList.isEmpty()) {
            userMapper.batchInsert(userList);
        }
    }
}
